package com.cat.yygh.common.handler;

import com.cat.yygh.common.exception.YyghException;
import com.cat.yygh.common.result.R;
import lombok.extern.slf4j.Slf4j;
import org.springframework.web.bind.annotation.*;

import java.sql.SQLException;

@Slf4j
@RestControllerAdvice//标记全局异常处理
public class GlobalExceptionHandler {
    @ExceptionHandler(value = Exception.class)//粒度
    /*@ResponseBody*/
    public R handlerException(Exception e){
        e.printStackTrace();//输出异常日志文件
        return R.error().message(e.getMessage());
    }
    @ExceptionHandler(value = SQLException.class)//细粒度的异常处理
    public R handleSqlException(SQLException sqlException){
        sqlException.printStackTrace();//输出异常日志文件
        return R.error().message("Sql异常");
    }
    @ExceptionHandler(value = RuntimeException.class)//细粒度的异常处理
    public R handleSqlException(RuntimeException runtimeException){
        runtimeException.printStackTrace();//输出异常日志文件
        return R.error().message("运行异常");
    }
    @ExceptionHandler(value = ArithmeticException.class)//细粒度的异常处理
    public R handleSqlException(ArithmeticException ArithmeticException){
        ArithmeticException.printStackTrace();//输出异常日志文件
        return R.error().message("数学异常");
    }
    /*自定义异常*/
    @ExceptionHandler(value = YyghException.class)//细粒度的自定义异常处理
    public R handleYyghException(YyghException yyghException){
        yyghException.printStackTrace();//输出异常日志文件
        return R.error().message(yyghException.getMessage()).code(yyghException.getCode());
    }
}
